#!/usr/bin/env python3
"""
数据源切换示例
演示如何在数据库和CSV文件之间切换数据源
"""

import sys
import os

# 添加项目根目录到Python路径
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from src.config import ConfigManager
from src.core.wechat_robot import WeChatRobot

def example_database_source():
    """使用数据库数据源示例"""
    print("=== 使用数据库数据源 ===")
    
    # 创建配置管理器
    config_manager = ConfigManager()
    
    # 设置为数据库数据源
    config_manager.update_config('robot.data_source.type', 'database')
    config_manager.update_config('robot.data_source.page_size', 5)
    
    # 创建机器人实例
    robot = WeChatRobot(config_manager)
    
    # 获取手机号
    mobiles = robot.get_mobiles(0)
    print(f"从数据库获取的手机号: {mobiles}")
    
    return robot

def example_csv_source():
    """使用CSV文件数据源示例"""
    print("\n=== 使用CSV文件数据源 ===")
    
    # 创建配置管理器
    config_manager = ConfigManager()
    
    # 设置为CSV数据源
    config_manager.update_config('robot.data_source.type', 'csv')
    config_manager.update_config('robot.data_source.csv_file', 'data/customer.csv')
    config_manager.update_config('robot.data_source.page_size', 5)
    
    # 创建机器人实例
    robot = WeChatRobot(config_manager)
    
    # 获取手机号
    mobiles = robot.get_mobiles(0)
    print(f"从CSV文件获取的手机号: {mobiles}")
    
    return robot

def example_dynamic_switch():
    """动态切换数据源示例"""
    print("\n=== 动态切换数据源 ===")
    
    config_manager = ConfigManager()
    
    # 先使用数据库
    print("--- 切换到数据库 ---")
    config_manager.update_config('robot.data_source.type', 'database')
    robot = WeChatRobot(config_manager)
    mobiles = robot.get_mobiles(0)
    print(f"数据库手机号: {mobiles}")
    
    # 再切换到CSV
    print("--- 切换到CSV ---")
    config_manager.update_config('robot.data_source.type', 'csv')
    robot = WeChatRobot(config_manager)
    mobiles = robot.get_mobiles(0)
    print(f"CSV手机号: {mobiles}")

def example_pagination():
    """分页示例"""
    print("\n=== 分页示例 ===")
    
    config_manager = ConfigManager()
    config_manager.update_config('robot.data_source.type', 'csv')
    config_manager.update_config('robot.data_source.page_size', 1)  # 每页1条
    
    robot = WeChatRobot(config_manager)
    
    # 获取不同页的数据
    for page in range(3):
        mobiles = robot.get_mobiles(page)
        print(f"第{page}页: {mobiles}")

if __name__ == "__main__":
    # 运行示例
    example_database_source()
    example_csv_source()
    example_dynamic_switch()
    example_pagination()
    
    print("\n=== 示例完成 ===")
    print("提示：")
    print("1. 修改 config/robot.yaml 中的 data_source.type 来切换数据源")
    print("2. 使用环境变量 DATA_SOURCE_TYPE=csv 或 DATA_SOURCE_TYPE=database")
    print("3. 在代码中动态修改配置来切换数据源")
